The term upgrading a software application generally refers to the process of replacing an existing version of the software application with a newer version, adding a new version of the software application where none previously existed, or somehow changing an existing version of the software application to a newer different version. A software upgrade may be performed for various reasons such as to add one or more features, remove one or more features, modify one or more features from an existing version of the software, remove bugs or errors, improve the software efficiency, and other reasons. An upgrade is generally performed to enhance the performance of a software application.
Many modern computing environments typically include a framework of multiple heterogeneous software applications, which may be developed by different third-party entities. These software applications may include zero or more plugins. The plugins may, for example, include software components that add a new utility/feature or enhance the utilities/features of a software application. The applications may run on or be hosted by multiple hosts in a distributed environment, with each host potentially hosting multiple applications. Performing an upgrade operation in such a distributed environment comprises multiple upgrade processes executed by multiple hosts such that one or more upgrade processes may be executed to upgrade each application. Many of the upgrade processes may be executed in parallel. Possible dependencies among the upgrade processes further complicate the overall upgrade.
In an environment where multiple applications hosted by multiple hosts need to be upgraded, the upgrade operation can comprise several upgrade processes running, possibly in parallel, on multiple hosts. Each upgrade process may be configured to generate and send out a message or notification indicative of the progress of the process. These notifications may, for example, be provided in the form of emails that are sent to one or more users such as system administrators and the like. Since a single host may execute multiple upgrade processes, possibly in parallel, with each upgrade process generating one or more notifications, a host may generate and send out multiple such notifications. Since there could be multiple hosts (e.g., thousands of hosts) involved in the upgrade operation with each host executing one or more upgrade processes, a large number of notifications may be generated as part of the overall upgrade operation. Significant processing and memory resources are used, and many times wasted, in the generation and delivery of these large numbers of notifications. Moreover, the users receiving these notifications are completely overwhelmed by the volume of such notifications.
Conventionally, individual user recipients have tried to address this problem by building their own filtering applications to reduce notifications received by that specific recipient. However, these filtering applications are user-specific and execute on the user-side (on the user's client devices) and thus fail to reduce the overall notifications-related network traffic generated by the hosts executing the upgrade processes.